home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland Pascal with Objects 7.0 / UNITS.ZIP / WINAPI.H < prev    next >
C/C++ Source or Header  |  1992-10-27  |  9KB  |  263 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * winapi.h -    Windows functions, types, and definitions                     *
  4. *                                                                             *
  5. \*****************************************************************************/
  6.  
  7. #ifndef __WINAPI_H     /* prevent multiple includes */
  8. #define __WINAPI_H
  9.  
  10. #ifdef __cplusplus
  11. extern "C" {            /* Assume C declarations for C++ */
  12. #endif  /* __cplusplus */
  13.  
  14. #define VOID                void
  15. #define FAR                 _far
  16. #define NEAR                _near
  17. #define PASCAL              _pascal
  18. #define CDECL               _cdecl
  19. #define WINAPI              _far _pascal
  20. #define CALLBACK            _far _pascal
  21.  
  22. typedef int                 BOOL;
  23. #define FALSE               0
  24. #define TRUE                1
  25.  
  26. typedef unsigned char       BYTE;
  27. typedef unsigned short      WORD;
  28. typedef unsigned long       DWORD;
  29. typedef unsigned int        UINT;
  30. #ifdef STRICT
  31. typedef signed long         LONG;
  32. #else
  33. #define LONG long
  34. #endif
  35.  
  36. #ifndef NULL
  37. #define NULL                0
  38. #endif
  39.  
  40. typedef char NEAR*          PSTR;
  41. typedef char NEAR*          NPSTR;
  42.  
  43. typedef char FAR*           LPSTR;
  44. typedef const char FAR*     LPCSTR;
  45.  
  46. typedef BYTE NEAR*          PBYTE;
  47. typedef BYTE FAR*           LPBYTE;
  48.  
  49. typedef int NEAR*           PINT;
  50. typedef int FAR*            LPINT;
  51.  
  52. typedef WORD NEAR*          PWORD;
  53. typedef WORD FAR*           LPWORD;
  54.  
  55. typedef long NEAR*          PLONG;
  56. typedef long FAR*           LPLONG;
  57.  
  58. typedef DWORD NEAR*         PDWORD;
  59. typedef DWORD FAR*          LPDWORD;
  60.  
  61. typedef void FAR*           LPVOID;
  62.  
  63. #ifdef STRICT
  64. typedef const void NEAR*        HANDLE;
  65. #define DECLARE_HANDLE(name)    struct name##__ { int unused; }; \
  66.                                 typedef const struct name##__ NEAR* name
  67. #define DECLARE_HANDLE32(name)  struct name##__ { int unused; }; \
  68.                                 typedef const struct name##__ FAR* name
  69. #else   /* STRICT */
  70. typedef UINT                    HANDLE;
  71. #define DECLARE_HANDLE(name)    typedef UINT name
  72. #define DECLARE_HANDLE32(name)  typedef DWORD name
  73. #endif  /* !STRICT */
  74.  
  75. typedef HANDLE*             PHANDLE;
  76. typedef HANDLE NEAR*        SPHANDLE;
  77. typedef HANDLE FAR*         LPHANDLE;
  78.  
  79. typedef HANDLE              HGLOBAL;
  80. typedef HANDLE              HLOCAL;
  81.  
  82. typedef HANDLE              GLOBALHANDLE;
  83. typedef HANDLE              LOCALHANDLE;
  84.  
  85. typedef UINT                ATOM;
  86.  
  87. #ifdef STRICT
  88. typedef void (CALLBACK*     FARPROC)(void);
  89. typedef void (NEAR PASCAL*  NEARPROC)(void);
  90. #else
  91. typedef int (CALLBACK*      FARPROC)();
  92. typedef int (NEAR PASCAL*   NEARPROC)();
  93. #endif
  94.  
  95. DECLARE_HANDLE(HINSTANCE);
  96. typedef HINSTANCE HMODULE;  /* HMODULEs can be used in place of HINSTANCEs */
  97. DECLARE_HANDLE(HRSRC);
  98. DECLARE_HANDLE(HWND);
  99.  
  100. #ifdef STRICT
  101. typedef BOOL (CALLBACK* GNOTIFYPROC)(HGLOBAL);
  102. #else
  103. typedef FARPROC GNOTIFYPROC;
  104. #endif
  105.  
  106. #define LOBYTE(w)           ((BYTE)(w))
  107. #define HIBYTE(w)           ((BYTE)((UINT)(w) >> 8))
  108.  
  109. #define LOWORD(l)           ((WORD)(l))
  110. #define HIWORD(l)           ((WORD)((DWORD)(l) >> 16))
  111.  
  112. #define MAKELONG(low, high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
  113.  
  114. /* Flags returned by GetWinFlags */
  115.  
  116. #define WF_PMODE        0x0001
  117. #define WF_CPU286       0x0002
  118. #define WF_CPU386       0x0004
  119. #define WF_CPU486       0x0008
  120. #define WF_STANDARD     0x0010
  121. #define WF_WIN286       0x0010
  122. #define WF_ENHANCED     0x0020
  123. #define WF_WIN386       0x0020
  124. #define WF_CPU086       0x0040
  125. #define WF_CPU186       0x0080
  126. #define WF_LARGEFRAME   0x0100
  127. #define WF_SMALLFRAME   0x0200
  128. #define WF_80x87        0x0400
  129. #define WF_PAGING       0x0800
  130. #define WF_WLO          0x8000
  131.  
  132. /* Global Memory Flags */
  133.  
  134. #define GMEM_FIXED          0x0000
  135. #define GMEM_MOVEABLE       0x0002
  136. #define GMEM_NOCOMPACT      0x0010
  137. #define GMEM_NODISCARD      0x0020
  138. #define GMEM_ZEROINIT       0x0040
  139. #define GMEM_MODIFY         0x0080
  140. #define GMEM_DISCARDABLE    0x0100
  141. #define GMEM_NOT_BANKED     0x1000
  142. #define GMEM_SHARE          0x2000
  143. #define GMEM_DDESHARE       0x2000
  144. #define GMEM_NOTIFY         0x4000
  145.  
  146. /* GlobalFlags return flags (in addition to GMEM_DISCARDABLE) */
  147.  
  148. #define GMEM_DISCARDED      0x4000
  149. #define GMEM_LOCKCOUNT      0x00FF
  150.  
  151. /* Message Box Flags */
  152.  
  153. #define MB_OK               0x0000
  154. #define MB_OKCANCEL         0x0001
  155. #define MB_ABORTRETRYIGNORE 0x0002
  156. #define MB_YESNOCANCEL      0x0003
  157. #define MB_YESNO            0x0004
  158. #define MB_RETRYCANCEL      0x0005
  159. #define MB_TYPEMASK         0x000F
  160.  
  161. #define MB_ICONHAND         0x0010
  162. #define MB_ICONQUESTION     0x0020
  163. #define MB_ICONEXCLAMATION  0x0030
  164. #define MB_ICONASTERISK     0x0040
  165. #define MB_ICONMASK         0x00F0
  166.  
  167. #define MB_ICONINFORMATION  MB_ICONASTERISK
  168. #define MB_ICONSTOP         MB_ICONHAND
  169.  
  170. #define MB_DEFBUTTON1       0x0000
  171. #define MB_DEFBUTTON2       0x0100
  172. #define MB_DEFBUTTON3       0x0200
  173. #define MB_DEFMASK          0x0F00
  174.  
  175. #define MB_APPLMODAL        0x0000
  176. #define MB_SYSTEMMODAL      0x1000
  177. #define MB_TASKMODAL        0x2000
  178.  
  179. #define MB_NOFOCUS          0x8000
  180.  
  181. /* Windows API Functions */
  182.  
  183. int         WINAPI AccessResource(HINSTANCE, HRSRC);
  184. UINT        WINAPI AllocDStoCSAlias(UINT);
  185. UINT        WINAPI AllocSelector(UINT);
  186. UINT        WINAPI ChangeSelector(UINT sourceSel, UINT destSel);
  187. DWORD       WINAPI GetSelectorBase(UINT);
  188. DWORD       WINAPI GetSelectorLimit(UINT);
  189. void        WINAPI FatalExit(int);
  190. HRSRC       WINAPI FindResource(HINSTANCE, LPCSTR, LPCSTR);
  191. void        WINAPI FreeLibrary(HINSTANCE);
  192. BOOL        WINAPI FreeResource(HGLOBAL);
  193. UINT        WINAPI FreeSelector(UINT);
  194. LPSTR       WINAPI GetDOSEnvironment(void);
  195. DWORD       WINAPI GetFreeSpace(UINT);
  196. int         WINAPI GetModuleFileName(HINSTANCE, LPSTR, int);
  197. HMODULE     WINAPI GetModuleHandle(LPCSTR);
  198. int         WINAPI GetModuleUsage(HINSTANCE);
  199. FARPROC     WINAPI GetProcAddress(HINSTANCE, LPCSTR);
  200. DWORD       WINAPI GetVersion(void);
  201. DWORD       WINAPI GetWinFlags(void);
  202. HGLOBAL     WINAPI GlobalAlloc(UINT, DWORD);
  203. DWORD       WINAPI GlobalCompact(DWORD);
  204. DWORD       WINAPI GlobalDosAlloc(DWORD);
  205. UINT        WINAPI GlobalDosFree(UINT);
  206. void        WINAPI GlobalFix(HGLOBAL);
  207. void        WINAPI GlobalUnfix(HGLOBAL);
  208. UINT        WINAPI GlobalFlags(HGLOBAL);
  209. HGLOBAL     WINAPI GlobalFree(HGLOBAL);
  210. DWORD       WINAPI GlobalHandle(UINT);
  211. #ifdef STRICT
  212. void FAR*   WINAPI GlobalLock(HGLOBAL);
  213. #else
  214. char FAR*   WINAPI GlobalLock(HGLOBAL);
  215. #endif
  216. HGLOBAL     WINAPI GlobalLRUNewest(HGLOBAL);
  217. HGLOBAL     WINAPI GlobalLRUOldest(HGLOBAL);
  218. void        WINAPI GlobalNotify(GNOTIFYPROC);
  219. UINT        WINAPI GlobalPageLock(HGLOBAL);
  220. UINT        WINAPI GlobalPageUnlock(HGLOBAL);
  221. HGLOBAL     WINAPI GlobalReAlloc(HGLOBAL, DWORD, UINT);
  222. DWORD       WINAPI GlobalSize(HGLOBAL);
  223. BOOL        WINAPI GlobalUnlock(HGLOBAL);
  224. HINSTANCE   WINAPI LoadLibrary(LPCSTR);
  225. HGLOBAL     WINAPI LoadResource(HINSTANCE, HRSRC);
  226. int         WINAPI LoadString(HINSTANCE, UINT, LPSTR, int);
  227. #ifdef STRICT
  228. void FAR*   WINAPI LockResource(HGLOBAL);
  229. #else
  230. char FAR*   WINAPI LockResource(HGLOBAL);
  231. #endif
  232. HGLOBAL     WINAPI LockSegment(UINT);
  233. int         WINAPI MessageBox(HWND, LPCSTR, LPCSTR, UINT);
  234. UINT        WINAPI PrestoChangoSelector(UINT sourceSel, UINT destSel);
  235. UINT        WINAPI SetSelectorBase(UINT, DWORD);
  236. UINT        WINAPI SetSelectorLimit(UINT, DWORD);
  237. DWORD       WINAPI SizeofResource(HINSTANCE, HRSRC);
  238. void        WINAPI UnlockSegment(UINT);
  239.  
  240. #define     GlobalAllocPtr(flags, cb)   \
  241.                 (GlobalLock(GlobalAlloc((flags), (cb))))
  242. #define     GlobalDiscard(h)            \
  243.                 (GlobalReAlloc((h), 0L, GMEM_MOVEABLE))
  244. #define     GlobalFreePtr(lp)           \
  245.                 (GlobalUnlockPtr(lp), (BOOL)GlobalFree(GlobalPtrHandle(lp)))
  246. #define     GlobalLockPtr(lp)           \
  247.                 ((BOOL)SELECTOROF(GlobalLock(GlobalPtrHandle(lp))))
  248. #define     GlobalPtrHandle(lp)         \
  249.                 ((HGLOBAL)LOWORD(GlobalHandle(SELECTOROF(lp))))
  250. #define     GlobalReAllocPtr(lp, cbNew, flags)  \
  251.                 (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags))))
  252. #define     GlobalUnlockPtr(lp)         \
  253.                 (GlobalUnlock(GlobalPtrHandle(lp)))
  254. #define     UnlockResource(h)           \
  255.                 (GlobalUnlock(h))
  256.  
  257. #ifdef __cplusplus
  258. }                       /* End of extern "C" { */
  259. #endif  /* __cplusplus */
  260.  
  261. #endif  /* __WINAPI_H */
  262.  
  263.